package com.aaa.dang.modules.system.service;

import com.aaa.dang.common.entity.Permission;
import com.aaa.dang.common.util.ResultModel;

import java.util.Set;

/**
 * 权限业务接口
 *
 * @author Dadazhao
 * @date 2018/12/18
 */
public interface IPermissionService {
    /**
     * 查询所有的权限
     *
     * @param status 空为所有 0为正常 1为停用
     * @return 权限列表
     */
    ResultModel getPermissionAll(Integer status);

    /**
     * 修改权限的状态
     *
     * @param id     权限 id
     * @param status 状态 0 为启用 1 为禁用
     * @return code  0 成功 1 失败
     */
    ResultModel updatePermissionStatus(Integer id, Integer status);

    /**
     * 添加新的权限
     *
     * @param permi 权限实体
     * @return code  0 成功 1 失败
     */
    ResultModel addPermission(Permission permi);

    /**
     * 通过id修改权限
     *
     * @param permi permi实体
     * @return code  0 成功 1 失败
     */
    ResultModel updatePermissionById(Permission permi);

    /**
     * 通过ID删除权限
     *
     * @param id 权限id
     * @return code  0 成功 1 失败
     */
    ResultModel deletePermissionById(Integer id);

    /**
     * 获得Tree格式的所有权限
     *
     * @param status 空为所有 0为启用的
     * @return 权限 tree
     */
    ResultModel getPermissionTreeAll(Integer status);

    /**
     * 通过角色id获得角色权限
     *
     * @param id 角色id
     * @return 权限列表
     */
    ResultModel getRolePermissionById(Integer id);

    /**
     * 通过员工id获得所有的权限
     *
     * @param id 员工 ID
     * @return 权限 列表
     */
    ResultModel getHavePermissionById(Integer id);

    /**
     * 通过员工id获得所有的的权限(树形)
     *
     * @param id 员工id
     * @return 权限 tree
     */
    ResultModel getHavePermissionTreeById(Integer id);

    /**
     * 通过角色名称获得权限
     *
     * @param empLoginName 登录账号
     * @return 权限 集合
     */
    Set<String> getPermissionsByEmpLoginName(String empLoginName);
}
